"""
交易 - 预授权关闭服务
"""

from jlpay.services.base_service import BaseService
from jlpay.model.trans.common.common_trans import PreAuthCloseRequest, PreAuthCloseResponse


class PreAuthCloseService(BaseService):
    """预授权关闭服务"""
    
    def __init__(self, config):
        """
        初始化预授权关闭服务
        
        Args:
            config: OrgConfig实例
        """
        super().__init__(config)
    
    def get_api_url(self, request_class, api_path=None):
        """
        获取API URL
        
        Args:
            request_class: 请求类
            api_path: 接口路径
            
        Returns:
            完整的API URL
        """
        base_url = self.config.url
        
        if api_path:
            return f"{base_url}{api_path}"
        
        # 优先使用API_URL（新方式）
        api_url = getattr(request_class, 'API_URL', '')
        if api_url:
            return f"{base_url}{api_url}"
        
        # 如果没有API_URL，尝试使用API_PREFIX + API_URI（旧方式）
        api_prefix = getattr(request_class, 'API_PREFIX', '')
        api_uri = getattr(request_class, 'API_URI', '')
        if api_prefix and api_uri:
            return f"{base_url}{api_prefix}{api_uri}"
        
        # 如果都没有定义，使用默认路径
        return f"{base_url}/open/trans"
    
    def pre_auth_close(self, request):
        """
        预授权关闭接口
        
        Args:
            request: PreAuthCloseRequest实例
            
        Returns:
            PreAuthCloseResponse实例
        """
        return self.post(request, PreAuthCloseResponse) 